#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "config.h"


/* 
 * Das Unterprogramm parsed eine Konfigurationsdatei (u.U. Standardkonfigurationsdatei 'client.conf') und 
 * speichert die gelesenen Argumente um sie im weiteren Programmverlauf beim Verbindungsaufbau verwenden zu können.
 */

int Konfig_lesen(const char *Konfigurationsdatei) {

	FILE* fd;
	fd = fopen(Konfigurationsdatei,"r");

	if (fd == NULL) {
		perror("Fehler beim Oeffnen der Konfigurationsdatei");
	}


	/* String Array bilden, um jede Zeile zu speichern. */
	char str[1000][1000];

	int i = 0;

	while (1) {

		/* Zeile lesen und speichern. Wenn alles gelesen, dann break. */
		if (fgets(str[i], 1000, fd) == NULL) {
			break;
			}


		/* Hostname lesen und speichern. */
		if (strstr(str[i], "Hostname") != NULL) {
			char *Hostname_temp = strtok(str[i], "=");

			if (Hostname_temp != NULL) {
				Hostname_temp = strtok(NULL, "=");
			}

			konf.Hostname = strtok(Hostname_temp, " \n"); // Leere Zeichen und \n löschen.
			i++;
			continue;
		}


		/* Portnummer lesen und speichern.*/
		else if (strstr(str[i], "Portnummer") != NULL) {
			char *Portnummer_temp = strtok(str[i], "=");

			if (Portnummer_temp != NULL) {
				Portnummer_temp = strtok(NULL, "=");
			}

			konf.Portnummer = atoi(strtok(Portnummer_temp, " \n"));
			i++;
			continue;
		} 


		/* Gamekindname lesen und speichern. */
		else if (strstr(str[i], "Gamekindname") != NULL)
		{
			char *Gamekindname_temp = strtok(str[i], "=");
			Gamekindname_temp = malloc(1000*sizeof(char));

			if (Gamekindname_temp !=NULL) {
				Gamekindname_temp = strtok(NULL,"=");
			}

			konf.Gamekindname = strtok(Gamekindname_temp, " \n");
			i++;
			continue;
		}


		i++;
	}

	fclose(fd);
    return EXIT_SUCCESS;
}

